import request from '@/api/axios'
import {AxiosPromise} from 'axios'
import {DataRes} from '@/api/config'
import {BasePhysicalExamination} from './index'

/**
 * @description: 表单属性
 * @return {*}
 */
export interface LifeStyle extends BasePhysicalExamination {
  exerFreqState: string // 锻炼频率
  perExerTime?: number // 每次锻炼时间
  insExerTime?: number // 坚持锻炼时间
  exerMethod?: string // 锻炼方式
  eatHabit: string //饮食习惯
  eatHabitRadio: string
  eatHabitCheckboxs: string[]
  smokeState: string // 吸烟状况
  dailySmokeSum?: number // 平均日吸烟量
  startSmorkeAge?: number // 开始吸烟年龄
  quitSmorkeAge?: number // 戒烟年龄
  drinkFreqState: string // 饮酒频率
  dailyDrinkSum?: number // 日饮酒量
  quitDrinkState?: string // 是否戒酒
  quitDrinkAge?: number // 戒酒年龄
  startDrinkAge?: number //开始饮酒年龄
  drunkState?: string // 近一年是否曾醉酒
  drinkType: string | null // 饮酒种类
  drinkTypeCheckboxs: string[] // 饮酒种类复选
  drinkTypeOthers: string | null // 饮酒种类其他
  occupaHist: string //职业病危害因素接触史
  workTypeName: string | null  // 工种
  ageLimit?: number // 从业时间
  dust: string | null // 毒物种类粉尘
  dustSecurity: string // 毒物种类粉尘防护措施
  dustSecurityExist: string | null //毒物种类粉尘-有防护措施内容
  radi: string | null // 毒物种类放射物质
  radiSecurity: string // 毒物种类放射物质防护措施
  radiSecurityExist: string | null //毒物种类放射物质-有防护措施内容
  phys: string | null // 毒物种类物理因素
  physSecurity: string // 毒物种类物理因素防护措施
  physSecurityExist: string | null //毒物种类物理因素-有防护措施内容
  chem: string | null // 毒物种类化学物质
  chemSecurity: string // 毒物种类化学物质防护措施
  chemSecurityExist: string | null //毒物种类化学物质-有防护措施内容
  other: string | null // 毒物种类其他
  otherSecurity: string // 毒物种类其他防护措施
  otherSecurityExist: string | null //毒物种类其他-有防护措施内容
}

// 摘除后端不要的属性
export type LifeStyleParams = Omit<LifeStyle, 'eatHabitRadio' | 'eatHabitCheckboxs' | 'drinkTypeCheckboxs'>

/**
 * @description: 保存生活方式
 * @param {LifeStyle} data
 * @return {*}
 */
export const saveLifeStyle = (data: LifeStyleParams): AxiosPromise<DataRes<undefined>> => {
  return request({
    url: '/api/lifeStyle/save',
    method: 'post',
    data
  })
}

/**
 * @description: 根据体检登记表id获取生活方式数据
 * @param {string} checkupRegisterId
 * @return {*}
 */
export const getLifeStyle = (checkupRegisterId: string): AxiosPromise<DataRes<LifeStyle>> => {
  return request({
    url: `/api/lifeStyle/get/${checkupRegisterId}`,
    method: 'get'
  })
}

/**
 * @description: 拒检生活方式
 * @param {BasePhysicalExamination} data
 * @return {*}
 */
export const rejectLifeStyle = (data: BasePhysicalExamination): AxiosPromise<DataRes<undefined>> => {
  return request({
    url: '/api/lifeStyle/reject',
    method: 'post',
    data
  })
}
